//package tc.alert.tckejisoc.utils;
//
//
//import java.io.File;
//import java.io.IOException;
//import java.net.InetAddress;
//import java.net.UnknownHostException;
//
//public class IPCountryResolver {
//    private static final String LAN_CODE = "LAN";
//    private static final String UNKNOWN_CODE = "UNKNOWN";
//
//    private final DatabaseReader dbReader;
//
//    public IPCountryResolver(File databaseFile) throws IOException {
//        this.dbReader = new DatabaseReader.Builder(databaseFile).build();
//    }
//
//    public String resolveCountryCode(String ipAddress) {
//        try {
//            InetAddress inetAddress = InetAddress.getByName(ipAddress);
//
//            // 检查内网地址
//            if (isPrivateIP(inetAddress)) {
//                return LAN_CODE;
//            }
//
//            // 查询国家数据库
//            CountryResponse response = dbReader.country(inetAddress);
//            if (response != null
//                    && response.getCountry() != null
//                    && !response.getCountry().getIsoCode().isEmpty()) {
//                return response.getCountry().getIsoCode();
//            }
//            return UNKNOWN_CODE;
//        } catch (UnknownHostException e) {
//            System.err.println("Invalid IP format: " + ipAddress);
//            return UNKNOWN_CODE;
//        } catch (IOException | GeoIp2Exception e) {
//            System.err.println("Database query error: " + e.getMessage());
//            return UNKNOWN_CODE;
//        }
//    }
//
//    private boolean isPrivateIP(InetAddress ip) {
//        byte[] bytes = ip.getAddress();
//        if (bytes.length == 4) {
//            return isIPv4Private(bytes);
//        }
//        // 此处可扩展IPv6内网判断
//        return false;
//    }
//
//    private boolean isIPv4Private(byte[] addr) {
//        final int b0 = addr[0] & 0xFF;
//        final int b1 = addr[1] & 0xFF;
//
//        // 10.0.0.0/8
//        if (b0 == 10) {
//            return true;
//        }
//
//        // 172.16.0.0/12
//        if ((b0 == 172) && (b1 >= 16) && (b1 <= 31)) {
//            return true;
//        }
//
//        // 192.168.0.0/16
//        if ((b0 == 192) && (b1 == 168)) {
//            return true;
//        }
//
//        // 169.254.0.0/16 (链路本地)
//        if ((b0 == 169) && (b1 == 254)) {
//            return true;
//        }
//
//        return false;
//    }
//
//    public static void main(String[] args) {
//        try {
//            // 需要从MaxMind获取数据库文件
//            File database = new File("GeoLite2-Country.mmdb");
//            IPCountryResolver resolver = new IPCountryResolver(database);
//
//            System.out.println(resolver.resolveCountryCode("8.8.8.8"));    // US
//            System.out.println(resolver.resolveCountryCode("192.168.1.1")); // LAN
//            System.out.println(resolver.resolveCountryCode("172.16.0.1"));  // LAN
//            System.out.println(resolver.resolveCountryCode("invalid_ip"));  // UNKNOWN
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//}